package com.itheima.config;

import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;

import java.sql.SQLException;

/**
 * @Author itheima
 * @Date 2022/4/29 11:53
 * @ControllerAdvice("com.itheima.controller")作用：凡是com.itheima.controller底下请求方法程序中抛出了异常，就会统一进行处理。
 * @ControllerAdvice：也是一个组件注解，该对象需要放入到容器中 场景：在哪些包下controller中出现异常需要捕获。捕获什么具体异常，异常捕捉之后怎么处理 。
 * 注意：如果com.itheima.controller包下Controller对象下的方法抛出了不同的异常（RuntimeException、SQLException）
 * @RestControllerAdvice("com.itheima.controller")=@ResponseBody+@ControllerAdvice("com.itheima.controller")
 */
@ControllerAdvice("com.itheima.controller")
//@RestControllerAdvice("com.itheima.controller")
public class GlobalExceptionHandler {


    //  1.如果放在类中如果抛出的是Exception异常，那么此时就会调用exceptionHandler，返回的error.jsp页面
    //  2.如果放在@ControllerAdvice类中，那么所有该包下的出现异常都会捕获处理。

    /**
     * @param e
     * @param model
     * @return
     * @ExceptionHandler 不声明捕获的具体异常，以参数列表中异常为准
     */
    @ExceptionHandler
    //@ResponseBody
    public String exceptionHandler(RuntimeException e, Model model) {
        System.out.println("e = " + e);
        model.addAttribute("error", "系统繁忙,请稍后再试2222!");
        return "error";
    }

    @ExceptionHandler
    //@ResponseBody
    public String exceptionHandler(SQLException e, Model model) {
        System.out.println("e = " + e);
        model.addAttribute("error", "系统繁忙,请稍后再试2222!");
        return "error";
    }

}
